package com.gain.api;
import com.gain.fxmarginserver.*;
import java.util.*;
public class MTOrder
{
private static String className="MTOrder";
private String operation="";
private long orderID;
private String currencyPair="";
private String orderDate="";
private String orderType="";
private String orderExpiration="";
private String referenceNumber="";
private String buySell="";
private long amount;
private String rate="";
private String basis="";
private boolean orderAccepted=true;
private boolean orderExecuted=false;
private String updateData="";
public boolean backSideOCO=false;
public String getOperation() { return operation; }
public long getOrderId() { return orderID; }
public String getCurrencyPair() { return currencyPair; }
public String getOrderDate() { return orderDate; }
public String getOrderType() { return orderType; }
public String getOrderExpiration(){ return orderExpiration ; }
public String getReferenceNumber() { return referenceNumber; }
public String getBuySell() { return buySell; }
public long getAmount() { return amount; }
public String getRate() { return rate; }
public String getBasis() { return basis; }
public boolean getBackSideOCO(){ return backSideOCO; }
public boolean getOrderAccepted() { return orderAccepted; }
public boolean getOrderExecuted() { return orderExecuted; }
public String getUpdateData() { return updateData; }
// 12-12-02 [pc] Added Order Status
private String orderStatus = "";
public String getOrderStatus() { return orderStatus; }
public String toString()
{
StringBuffer buffer=new StringBuffer();
buffer.append( "MTOrder object values ...\n" );
buffer.append( " Operation=" + getOperation() );
buffer.append( " Order Id=" + getOrderId() );
buffer.append( " Currency Pair=" + getCurrencyPair() );
buffer.append( " Order Date=" + getOrderDate() );
buffer.append( " Order Type=" + getOrderType() );
buffer.append( " Order Expiration=" + getOrderExpiration() + "\n" );
buffer.append( " Reference Number=" + getReferenceNumber() );
buffer.append( " Buy/Sell=" + getBuySell() );
buffer.append( " Amount=" + getAmount());
buffer.append( " Rate=" + getRate());
buffer.append( " Basis=" + getBasis() );
buffer.append( " Amount=" + getAmount() );
buffer.append( " Reason=" + getUpdateData() + "\n" );
buffer.append( " Order Accepted=" + getOrderAccepted() );
buffer.append( " Order Executed=" + getOrderExecuted() );
buffer.append( " Order Status=" + getOrderStatus() );
return( buffer.toString() );
}
public MTOrder( ODL_Data odlData, String currencyPair )
{
operation = "Order Listing";
orderID = odlData.GetOrderID();
char buySellChar = odlData.GetBuySell();
if (buySellChar == 'B')
buySell="Buy";
else
buySell="Sell";
this.currencyPair = currencyPair;
amount = odlData.GetAmount();
rate = odlData.GetRate();
orderDate = odlData.GetDateTime();
referenceNumber = odlData.GetConfirmation();
String orderBasis = odlData.GetOrderBasis();
if ( orderBasis.equals( "T" ) == true )
basis = "Limit";
else
basis = "Stop Loss";
orderExpiration = odlData.GetExpiryType();
}
public MTOrder(ArrayList orderList)
{
try
{
if ( orderList.size() != 10 )
{
EventLog.log( className, "MTOrder constructor error size=" + orderList.size());
return;
}
operation = "Order Listing";
Integer orderRef = (Integer)orderList.get(0);
orderID = (long)orderRef.intValue();
currencyPair = (String)orderList.get(1);
String buySellChar = (String)orderList.get(2);
if (buySellChar.charAt(0) == 'B')
buySell="Buy";
else
buySell="Sell";
Integer orderAmount = (Integer)orderList.get(3);
amount = orderAmount.longValue();
rate = (String)orderList.get(4);
java.sql.Timestamp orderDateInfo = (java.sql.Timestamp)orderList.get(5);
orderDate = orderDateInfo.toString();
referenceNumber = (String)orderList.get(6);
orderType = (String)orderList.get(7);
String orderBasis = (String)orderList.get(8);
if ( orderBasis.equals( "T" ) == true )
basis = "Limit";
else
basis = "Stop Loss";
orderExpiration = (String)orderList.get(9);
}
catch (Exception e)
{
EventLog.log( className, "MTOrder exception caught=");
EventLog.logException( className, e );
}
}
public MTOrder(ORC orc)
{
operation = "Order Cancelled";
orderID = orc.GetOrderID();
referenceNumber = orc.GetBankConf();
updateData = orc.GetReasonCode();
}
public MTOrder(ORF orf)
{
operation = "Order Failed";
orderID = orf.GetOrderID();
updateData = orf.GetReasonCode();
}
public MTOrder(ODF odf)
{
operation = "Order Deal Failed";
orderID = odf.GetOrderID();
referenceNumber = odf.getBankReference();
currencyPair = odf.GetCurrencyPair();
updateData = odf.GetUpdateData();
}
public MTOrder(ODD odd)
{
operation = "Order Executed";
orderID = odd.GetOrderID();
currencyPair = odd.GetCurrencyPair();
updateData = odd.GetUpdateData();
orderExecuted = true;
}
public MTOrder(ORD ord, int order)
{
operation = "Order Accepted";
orderID = ord.GetOrderID();
currencyPair = ord.GetCurrencyPair();
orderDate = ord.GetOrderDate();
orderExpiration = ord.GetOrderExpiry();
if ( order == 1 )
{
referenceNumber = ord.GetBankConf1();
char buySellChar = ord.GetBuySell1();
if (buySellChar == 'B')
buySell="Buy";
else
buySell="Sell";
amount = ord.GetAmount1();
rate = ord.GetRate1();
String orderBasis = ord.GetBasis1();
if ( orderBasis.equals( "T" ) == true )
basis = "Limit";
else
basis = "Stop Loss";
}
// 16-01-03 [pc] Add 3rd order
else if (order == 2) //second order in THEN or OCO
{
// its an OCO if it not a THEN order
backSideOCO = (ord.getThenOrder2() == false);
referenceNumber = ord.GetBankConf2();
if ( referenceNumber.length() == 0 ) //No OCO part in order
return;
char buySellChar = ord.GetBuySell2();
if (buySellChar == 'B')
buySell="Buy";
else
buySell="Sell";
amount = ord.GetAmount2();
rate = ord.GetRate2();
String orderBasis = ord.GetBasis2();
if ( orderBasis.equals( "T" ) == true )
basis = "Limit";
else
basis = "Stop Loss";
}
else if (order == 3) //second order in THEN or OCO
{
// its an THEN order
backSideOCO = false;
referenceNumber = ord.GetBankConf3();
if ( referenceNumber.length() == 0 )
return;
char buySellChar = ord.GetBuySell3();
if (buySellChar == 'B')
buySell="Buy";
else
buySell="Sell";
amount = ord.GetAmount3();
rate = ord.GetRate3();
String orderBasis = ord.GetBasis3();
if ( orderBasis.equals( "T" ) == true )
basis = "Limit";
else
basis = "Stop Loss";
}
}
/* @PHILCAVE - Added Function */
/**
* Construct a MTOrder from the xml passed in, throws exception if problem converting
*/
public MTOrder( String xml ) throws Exception {
// Create a node parser from the order
SimpleXMLNodeParser orderNode = new SimpleXMLNodeParser( xml );
// Set the internal members
orderID = Long.parseLong( orderNode.getNextNode( "CustomerOrderReference"));
currencyPair = orderNode.getNextNode( "Symbol");
buySell = ( orderNode.getNextNode( "BuySell").charAt(0)=='B' ? "Buy" : "Sell" );
amount = Long.parseLong( orderNode.getNextNode( "ContractValue") );
rate = orderNode.getNextNode( "Price");
orderDate = orderNode.getNextNode( "OrderDate");
referenceNumber = orderNode.getNextNode( "ConfirmationNumber");
orderType = orderNode.getNextNode( "OrderType");
basis = ( orderNode.getNextNode( "OrderBasis").charAt(0)=='T' ? "Limit" : "Stop Loss" );
orderExpiration = orderNode.getNextNode( "Expiry");
orderStatus = orderNode.getNextNode( "OrderStatus");
operation = "Order Listing";
}
}